package _10_串;
/*
    字符串的蛮力匹配算法2
    最坏时间复杂度：O(mn)
 */
public class BruteForce02 {
    /**
     *
     * @param text 文本串
     * @param pattern 模式串
     * @return
     */
    public static int indexOf(String text,String pattern){
        if(text == null || pattern == null) return -1;
        char[] textChars = text.toCharArray();
        int tLen = textChars.length; //文本串的长度
        if(tLen == 0) return -1;
        char[] patternChars = pattern.toCharArray();
        int pLen = patternChars.length; //模式串的长度
        if(pLen == 0) return -1;
        if(tLen < pLen) return -1; //文本串的长度小于模式串的长度

        int tMax = tLen - pLen; //tLen - pLen 文本串和模式串开始比较最后一次的临界值,
        for(int ti = 0;ti<=tMax;ti++){ //ti现在代表的含义是每一轮比较的起始位置
            int pi = 0;
            for(;pi<pLen;pi++){
                if(textChars[ti+pi]!=patternChars[pi]) break;
            }
            if(pi == pLen) return ti;
        }
        return -1;
    }

    public static void main(String[] args) {
        System.out.println(BruteForce02.indexOf("Hello World","H"));
        System.out.println(BruteForce02.indexOf("Hello World","d"));
        System.out.println(BruteForce02.indexOf("Hello World","or"));
        System.out.println(BruteForce02.indexOf("Hello World","abc"));
    }
}
